
19.06.2012, 16:45
|
Интересующийся
|
|
Регистрация: 19.06.2012
Сообщений: 16
|
|
Как распилить на массив данные которые пришли!?
Совсем недавно начал изучать аякс и вот напоролся на такую шнягу :\
С помощью $.ajax я отправил запрос.
Получил данные data
Как вытащить их за пределы запроса?
function(data)
{
var text = data;
}
alert(text);
alert() выдаёт, что переменная не определена [ undefined]
Последний раз редактировалось SDHP, 19.06.2012 в 17:07.
|
|

19.06.2012, 17:17
|
Новичок на форуме
|
|
Регистрация: 19.06.2012
Сообщений: 3
|
|
Сообщение от SDHP
|
Совсем недавно начал изучать аякс и вот напоролся на такую шнягу :\
С помощью $.ajax я отправил запрос.
Получил данные data
Как вытащить их за пределы запроса?
function(data)
{
var text = data;
}
alert(text);
alert() выдаёт, что переменная не определена [undefined]
|
var внутри функции создает локальную перменную
сделать её глобальной можно, убрав var
function(data){text = data;}
не смотря на то, что в случае отсутствия var создается глобальная переменная, чтобы исключить совпадение с локальными переменными функций/замыкания можно явно указать, что переменная - глобальная (является свойством window)
function(data){window.text = data;}
учти, что если ты делаешь запрос через $.ajax (который по умолчанию асинхронный), то код ниже продолжит выполняться до его завершения
$.ajax({
...
success:function(data){window.text=data;}
});
alert(window.text); // неверно! выведет undefined
|
|

19.06.2012, 17:32
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
SDHP,
1.Выложите код запроса, проще и правильней делать обработку в callback функции по возвращении Аякс-запроса
2. Можно сохранять в глобальную переменную - выставлять глобальный флаг , тестить по таймеру флаг (Не Айс
|
|

19.06.2012, 17:51
|
Интересующийся
|
|
Регистрация: 19.06.2012
Сообщений: 16
|
|
Сообщение от Sanya_Zol
|
var внутри функции создает локальную перменную
сделать её глобальной можно, убрав var
function(data){text = data;}
не смотря на то, что в случае отсутствия var создается глобальная переменная, чтобы исключить совпадение с локальными переменными функций/замыкания можно явно указать, что переменная - глобальная (является свойством window)
function(data){window.text = data;}
учти, что если ты делаешь запрос через $.ajax (который по умолчанию асинхронный), то код ниже продолжит выполняться до его завершения
$.ajax({
...
success:function(data){window.text=data;}
});
alert(window.text); // неверно! выведет undefined
|
$.?({
...
success:function(data){window.text=data;}
});
alert(window.text); // успех! получи переменную!
А какой запрос использовать чтобы alert(); вывел то, что нужно?
|
|

19.06.2012, 17:56
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от SDHP
|
А какой запрос использовать чтобы alert(); вывел то, что нужно?
|
SDHP, Изобразите Ваш текущий запрос(не стесняйтесь), тогда ясно будет что поправить
|
|

19.06.2012, 18:11
|
Интересующийся
|
|
Регистрация: 19.06.2012
Сообщений: 16
|
|
Сообщение от Deff
|
SDHP, Изобразите Ваш текущий запрос(не стесняйтесь), тогда ясно будет что поправить
|
$.ajax({
url: "xyGet.php",
type: "POST",
data: ({yget : 1}),
dataType: "json",
success: function(data){
coord = data.y
}
});
alert(coord);
|
|

19.06.2012, 18:21
|
Новичок на форуме
|
|
Регистрация: 19.06.2012
Сообщений: 3
|
|
Сообщение от SDHP
|
$.ajax({
url: "xyGet.php",
type: "POST",
data: ({yget : 1}),
dataType: "json",
success: function(data){
coord = data.y
}
});
alert(coord);
|
в этом то и проблема.. success вызывается ПОСЛЕ alert(coord);
$.ajax({
url: "xyGet.php",
type: "POST",
data: ({yget : 1}),
dataType: "json",
success: function(data){
coord = data.y;
alert(coord);
}
});
обрабатывать данные нужно в success-функции
кстати, точка с запятой после присвоения обязательна и может быть опущена только в конце функции.
function(a){
a=b // верно
}
function(a){
a=b // неверно
foo(b)
}
Последний раз редактировалось Sanya_Zol, 19.06.2012 в 18:24.
|
|

19.06.2012, 18:27
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
$.ajax({
url: "xyGet.php",
type: "POST",
data: ({yget : 1}),
dataType: "json",
success: function(data){
MyCallback (data.y)
}
});
function MyCallback (coord) {
alert(coord);
}
|
|

19.06.2012, 18:28
|
Интересующийся
|
|
Регистрация: 19.06.2012
Сообщений: 16
|
|
Сообщение от Sanya_Zol
|
в этом то и проблема.. success вызывается ПОСЛЕ alert(coord);
$.ajax({
url: "xyGet.php",
type: "POST",
data: ({yget : 1}),
dataType: "json",
success: function(data){
coord = data.y;
alert(coord);
}
});
обрабатывать данные нужно в success-функции
кстати, точка с запятой после присвоения обязательна и может быть опущена только в конце функции.
function(a){
a=b // верно
}
function(a){
a=b // неверно
foo(b)
}
|
А если мне нужно манипулировать с данными, не в success-функции, то что делать?
|
|

19.06.2012, 18:42
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от SDHP
|
Совсем недавно начал изучать аякс и вот напоролся на такую шнягу :\
С помощью $.ajax я отправил запрос.
Получил данные data
Как вытащить их за пределы запроса?
function(data)
{
var text = data;
}
alert(text);
alert() выдаёт, что переменная не определена [undefined]
|
Читайте мой пост в FAQ.
http://javascript.ru/forum/174893-post67.html
|
|
|
|